/******************************************************************************************
文件名：cmd_verify.c
作者：狼狼    版本：V1.0    创建日期：2021.8.31
文件描述：
    对各指令附加参数的判断函数集合。
历史修改记录：
1. 2021-8-31:V1.0 狼狼
创建。
2. 2022-5-11:V1.0 狼狼
代码公开。
******************************************************************************************/
//+------------------------------------------------------------------------------------------+
//|                                          文件说明
//+------------------------------------------------------------------------------------------+
//|      本文件提供了对内部指令的参数进行验证的接口，当向程序中注册新的内容指令时，需要在本文
//|  件中增加对新指令的参数的验证函数。为了逻辑上的完整性，即便指令不带参数，也应当为其创建对
//|  应的验证函数。
//|      特别注意，本文件提供的验证接口不负责判断内部指令ID-Value的有效性，对指令号和指令值的
//|  判断在解析器会话的处理过程中进行，这是为了方便为错误的指令创建回应报文。而内部的指令在程
//|  序设计伊始便已定下、在测试过程中完成验证，因此无需做二次校验。
//+------------------------------------------------------------------------------------------+
//|                                         头文件包含
//+------------------------------------------------------------------------------------------+
/*|*/#include <stdio.h>
/*|*/#include <string.h>
/*|*/#include <stdlib.h>
/*|*/#include <stdint.h>
/*|*/#include <unistd.h>
//|
/*|*/#include "cmd_verify.h"
/*|*/#include "project_debug.h"
//+------------------------------------------------------------------------------------------+
//|  函数集：各内部指令验证函数
//|  功能描述：对于各内部指令定义的内联判断语句
//|  参数说明：指向内部指令结构体的指针
//|  返回值说明：验证通过返回0，否则返回-1
//+------------------------------------------------------------------------------------------+
static int cmd_action_1_verify(ST_INTERNAL_CMD *pinternal_cmd)
{
    return 0;
}
static int cmd_config_1_verify(ST_INTERNAL_CMD *pinternal_cmd)
{
    return 0;
}
static int cmd_probe_1_verify(ST_INTERNAL_CMD *pinternal_cmd)
{
    return 0;
}
static int cmd_control_1_verify(ST_INTERNAL_CMD *pinternal_cmd)
{
    return 0;
}

//+------------------------------------------------------------------------------------------+
//|  函数名称：internal_cmd_args_verify
//|  功能描述：内部指令的参数校验
//|  参数说明：指向内部指令结构体的指针
//|  返回值说明：校验通过返回0
//|  备注：凡是在指令记录表中存在的指令项，均应设计对应的参数检查函数，即便该指令没有可变参数
//|        项，这是为了使程序逻辑更清晰。
//|        对于没有记录的处理分支，函数返回-1。
//+------------------------------------------------------------------------------------------+
int internal_cmd_args_verify(ST_INTERNAL_CMD *pinternal_cmd)
{
    switch(pinternal_cmd->cmd_id)
    {
        case CMD_ACTION:
            switch(pinternal_cmd->cmd_value)
            {
                case 1:return cmd_action_1_verify(pinternal_cmd);
                default:break;
            }
        break;
        case CMD_CONFIG:
            switch(pinternal_cmd->cmd_value)
            {
                case 1:return cmd_config_1_verify(pinternal_cmd);
                default:break;
            }
        break;
        case CMD_PROBE:
            switch(pinternal_cmd->cmd_value)
            {
                case 1:return cmd_probe_1_verify(pinternal_cmd);
                default:break;
            }
        break;
        case CMD_CONTROL:
            switch(pinternal_cmd->cmd_value)
            {
                case 1:return cmd_control_1_verify(pinternal_cmd);
                default:break;
            }
        break;
        default:break;
    }
    
    return -1;
}
